//调用fs方法
const fs = require('fs')
//调用path方法
const path = require('path')


//定义数据的一个路径
const url = path.join(__dirname, './data.json') //__dirname当前文件路径


//获取数据
// getData()
function getData() {
    fs.readFile(url, 'utf-8', (err, data) => {
        if (err) return console.log(err.message)
        let obj = JSON.parse(data)
        console.log(obj)
    })
}

//添加数据
// addData({
//     author: '华龙',
//     bookname: '法外狂徒',
//     publisher: '武汉人民出版社'
// })

function addData(obj) {
    fs.readFile(url, 'utf-8', (err, data) => {
        if (err) return console.log(err.message)
        //转换成对象类型
        let arr = JSON.parse(data)
        //在用户传值的里面添加id,数组最大下标里面的id+1
        obj.id = arr[arr.length - 1].id + 1
        arr.push(obj)
        // a.unshift在数据的在前面添加
        //写入完成数据的操作后在修改成json的数据类型
        fs.writeFile(url, JSON.stringify(arr), err => {
            if (err) return console.log(err.message) //错误返回
            console.log('恭喜你，添加图书成功')
        })
    })
}


//删除数据
// dalData(6)
function dalData(id){
    if(id ===undefined)  return console.log('请输入内容')
    //根据id删除数据,通过filter的特性吧满足条件的数据创建一个新数组
    fs.readFile(url,'utf-8',(err,data)=>{
        if(err)  return console.log(err.message)
        let arr = JSON.parse(data)
        let newArr = arr.filter(value=>{
            if(value.id!=id) return true
        })
        //写入删除后的数据
        fs.writeFile(url,JSON.stringify(newArr),err=>{
            if(err)  return console.log(err.message)
            console.log('恭喜你，删除成功')
        })
    })

}

//修改数据
updateData({
    "author": "华龙",
    "bookname": "法外狂徒",
    "publisher": "武汉人民出版社",
    "id": 5
})

function updateData(obj){
    fs.readFile(url,'utf-8',(err,data)=>{
        if(err)  return console.log(err.message)
        //获取成功后转换成对象类型
        let arr = JSON.parse(data)
        let index = arr.findIndex(ele=>{
            if(obj.id ==ele.id) return true
        })//查询元素的下标
        //替换元素
        arr.splice(index,1,obj)
        //替换后的元素返回数据
        fs.writeFile(url,JSON.stringify(arr),err=>{
            if(err) return console.log(err.message)
            console.log('修改成功')
        })

    })
}